home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / yelp / yelp.js < prev   
Text File  |  2009-10-15  |  3KB  |  96 lines

  1. var slt = {
  2.   /* Shorten the link trail by chopping off links from the
  3.   beginning of it until it's no longer wider than the screen */
  4.   init: function() {
  5.     slt.lt = document.getElementById('linktrail');
  6.     if (!slt.lt) return;
  7.  
  8.     /* Try and add links, in case we've just resized the
  9.        window to be bigger */
  10.     var canContinue = true;
  11.     while (canContinue &&
  12.           (slt.findRightEdge() < document.body.offsetWidth)) {
  13.       canContinue = slt.addLinktrailElement();
  14.     }
  15.  
  16.     /* Now remove links until the linktrail is narrower than
  17.        the window */
  18.     canContinue = true;
  19.     while (canContinue &&
  20.           (slt.findRightEdge() > document.body.offsetWidth)) {
  21.       canContinue = slt.removeLinktrailElement();
  22.     }
  23.   },
  24.  
  25.   findRightEdge: function() {
  26.     /* get the position of the far right-hand-edge of the rightmost
  27.        element in the linktrail */
  28.     var maxright = 0;
  29.  
  30.     for (var i=0;i<slt.lt.childNodes.length;i++) {
  31.       if (typeof slt.lt.childNodes[i].offsetLeft != 'undefined' &&
  32.           typeof slt.lt.childNodes[i].offsetWidth != 'undefined') {
  33.         var rightedge = slt.lt.childNodes[i].offsetLeft +
  34.             slt.lt.childNodes[i].offsetWidth;
  35.         if (rightedge > maxright) maxright = rightedge;
  36.       }
  37.     }
  38.  
  39.     return maxright;
  40.   },
  41.  
  42.   removeLinktrailElement: function() {
  43.     /* Walk through the link trail until we find a complete
  44.        link; when we do, change its displayed text to "ΓǪ",
  45.        put its actual text in a tooltip, and return */
  46.     var links = slt.lt.getElementsByTagName('a');
  47.  
  48.     for (var i=0;i<links.length;i++) {
  49.       if (links[i].firstChild) {
  50.         if (links[i].firstChild.nodeValue != 'ΓǪ') {
  51.           links[i].title = links[i].firstChild.nodeValue;
  52.           links[i].firstChild.nodeValue = 'ΓǪ';
  53.           return true;
  54.         }
  55.       }
  56.     }
  57.  
  58.     /* There are no links left to remove; indicate this back
  59.        to the caller so it doesn't loop infinitely */
  60.     return false;
  61.   },
  62.  
  63.   addLinktrailElement: function() {
  64.     /* Walk through the link trail until we find a "ΓǪ"
  65.        link; when we do, change its displayed text back to
  66.        what it should be and return */
  67.     var links = slt.lt.getElementsByTagName('a');
  68.  
  69.     for (var i=0;i<links.length;i++) {
  70.       if (links[i].firstChild) {
  71.         if (links[i].firstChild.nodeValue == 'ΓǪ') {
  72.           links[i].firstChild.nodeValue = links[i].title;
  73.           return true;
  74.         }
  75.       }
  76.     }
  77.  
  78.     /* There are no links left to add; indicate this back
  79.        to the caller so it doesn't loop infinitely */
  80.     return false;
  81.   }
  82. }
  83.  
  84. /* addEventListener() is Gecko-only, but so is yelp */
  85. window.addEventListener("load",slt.init,false);
  86. /* load doesn't seem to get fired in Yelp.  I might need to tell Gecko
  87.    that I'm finished or something.  DOMContentLoaded works though */
  88. window.addEventListener("DOMContentLoaded",slt.init,false);
  89. window.addEventListener("resize",slt.init,false);
  90.  
  91. function submit_search ()
  92. {
  93.     window.location = "x-yelp-search:" + document.getElementById ('search-entry').value;
  94.     return false;
  95. }
  96.